A CAM is a storage device in which data can be identified through a parallel search operation. A CAM typically includes an array of storage cells arranged in rows and columns, where each row of the CAM array corresponds to a stored word of reference data. The storage cells in a given row couple to a word line and a match line associated with the row. The word line is used to select the row for a read/write operation while the match line is used to signal a match or a miss during the search operation. Each column of the conventional CAM array corresponds to the same bit position in all of the words. The storage cells in a particular column are coupled to a pair of bit lines and a pair of search-lines associated with the column.
During a search operation, the match line develops a signal that indicates whether the word stored in the row matches a word of search data. The search data is applied to each pair of search lines, which have a pair of complementary binary signals or unique ternary signals thereon that represent a bit of an input value. Each CAM cell changes the voltage on the associated match line if the storage cell stores a bit that does not match the bit represented on the attached search lines. If the voltage on a match line remains unchanged during a search, the word stored in that row of storage cells matches the entire word of search data.
CAMs are much faster than conventional random access memory (RAM) for searching stored data because a search of all the words can be performed in parallel. However, use of CAMs is limited because of their large size, high cost, and large amounts of heat generated in comparison to conventional RAMs. For example, CAM cells are conventionally implemented using two static RAM (SRAM) cells and bit-compare circuitry (e.g., 16 transistors), which can require a large area ten times larger than conventional dynamic RAM (DRAM).